﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Reflection;

/// <summary>
/// Summary description for ControladorEditarBodega
/// </summary>
public class ControladorEditarBodega
{

    private static String dataMsg;
    private static String opMsg;
    private static String errorCode;

	public ControladorEditarBodega()
	{
		//
		// TODO: Add constructor logic here
		//
	}

    public String getDataMsg()
    {
        return dataMsg;
    }

    public String getOpMsg()
    {
        return opMsg;
    }

    public String getErrorCode()
    {
        return errorCode;
    }

    public void cargarDepartamentos(DropDownList drop, Button b , bool t, TextBox text  )
    {
        ModeloEditarBodega model = new ModeloEditarBodega();
        DataTable dt = model.getDepartamentosBodegas();
        if (t)
        {
            dataMsg = "El nombre de la bodega o su identificador no corresponden o bien no se encontraron en la solicitud. Intente m&aacute;s tarde";
            opMsg = "";
            b.Enabled = false;
            text.Text = "1";
            errorCode = "";
            return;
        
        }
        if (dt == null || dt.Rows.Count <= 0)
        {
            dataMsg = "Ocurri&oacute; un error al conectarse con la base de datos. Intente m&aacute;s tarde";
            opMsg = "";
            b.Enabled = false;
            text.Text = "1";
            errorCode = "";
            return;
        }

        else
        {

            dataMsg = "";
            opMsg = "";
        }

    }

    public void editarBodega(String nombreBodega, String idTipoBodega, String idBodega , String oldName , String newDepto , HttpRequest req)
    {
        ModeloEditarBodega model = new ModeloEditarBodega();
        model.setModel(nombreBodega, idTipoBodega);
        
        int result = model.validarModelo();
        
        if (result == 0)
        {
            errorCode = "";
            opMsg = "El campo 'Nuevo nombre de la bodega' es obligatorio";
            errorCode = "";
            dataMsg = "";
            return;
        }
        if (result == -1)
        {
            errorCode = "";
            opMsg = "El campo 'Nuevo nombre de la bodega' tiene a lo más 30 caracteres";
            errorCode = "";
            dataMsg = "";
            return;
        }
        if (result == -2)
        {
            errorCode = "";
            opMsg = "El nuevo nombre ingresado para la bodega ya existe en la base de datos";
            dataMsg = "";
            return;
        }
        if (result == -3)
        {
            errorCode = "";
            opMsg = "Ocurrió un error al conectarse con la base de datos. Intente más tarde";
            dataMsg = "";
            return;
        }
        if (result == 1)
        {

            int res2 = model.verificarDireccionEditarBodega(idBodega);

            if (res2 == -2)
            {
                errorCode = "";
                opMsg = "El nombre de la bodega y su identificador no corresponden";
                dataMsg = "";
                return;
            }

            if (res2 == -3)
            {
                errorCode = "";
                opMsg = "Ocurrió un error al conectarse con la base de datos. Intente más tarde";
                dataMsg = "";
                return;
            }

            if (res2 == 1)
            {
                bool res = model.editarBodega(idBodega);
                if (res)
                {
                    errorCode = "1";
                    opMsg = "La bodega '" + oldName + "' fue editada con éxito.\nSu nuevo nombre es: '" + nombreBodega + "'\nSu nuevo departamento es: '" + newDepto + "'";
                    // reflect to readonly property 
                    PropertyInfo isreadonly = typeof(System.Collections.Specialized.NameValueCollection).GetProperty("IsReadOnly", BindingFlags.Instance | BindingFlags.NonPublic);
                    dataMsg = "";
                    // make collection editable 
                    isreadonly.SetValue(req.QueryString, false, null);

                    // remove 
                    req.QueryString.Remove("n");

                    // modify 
                    req.QueryString.Set("n", nombreBodega);

                    // make collection readonly again 
                    isreadonly.SetValue(req.QueryString, true, null);
                    return;
                }
                else
                {
                    errorCode = "";
                    opMsg = "Ocurrió un error al conectarse con la base de datos. Intente más tarde";
                    dataMsg = "";
                    return;
                }
            }
        }

    }

   
}